//
// Created by ✎﹏ℳ๓独赏 ☆独醉 on 2023/2/25.
//
#include <stdio.h>

int main(){
    //按位取反测试
    printf("Bitwise negation test:\n");
    short int a = 0;
    //    printf("sizeof(a)=%d\n",sizeof(a));---2
    short int b = ~a;

    /*
     * a: 0000 0000 0000 0000
     * 负数在内存中存储的是二进制的补码
     * 原码:符号位不变，其他位按位取反得到反码
     * 反码:反码加一得到补码
     * 补码:补码减一，然后按位取反得到原码
     * 按位取反: 1111 1111 1111 1111 ---- b在内存中存储的内容（补码）
     * 补码 --> 反码: 1111 1111 1111 1110
     * 反码 --> 原码: 1000 0000 0000 0001
     * 0为正，1为负，打印时打印的是原码，故打印b的值为-1
     */
    printf("b:%d\n",b);
    printf("Test complete\n\n\n");
    return 0;
}